package com.sirap.spring.boot.demo.sword;
//
//import java.io.FileOutputStream;
//import java.io.OutputStream;
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import com.sirap.basic.component.Konstants;
//import com.sirap.basic.util.EmptyUtil;
//import com.sirap.basic.util.FileUtil;
//import com.sirap.basic.util.IOUtil;
//import com.sirap.basic.util.MiscUtil;
//import com.sirap.basic.util.StrUtil;
//import com.sirap.excel.MsExcelHelper;
//
public class SwordCarsManager {
//	
	private static SwordCarsManager instance;
	
	private SwordCarsManager() {
	}
	
	private static class Holder {
		private static SwordCarsManager instance = new SwordCarsManager();
	}
	
	public static SwordCarsManager g() {
		if(instance == null) {
			instance = Holder.instance;
		}
		
		return instance;
	}
//	
//	public List<CarTravelItem> readItems(String fileOfTravel, String fileOfType, int ktimes) {
//		List<CarTravelItem> overKTimes = Lists.newArrayList();
//		
//		List<CarTravelItem> travelItems = readCarTravelItems(fileOfTravel, 1);
//		if(EmptyUtil.isNullOrEmpty(travelItems)) {
//			return overKTimes;
//		}
//		
//		Map<String, String> ma = mapOfPlateAndType(fileOfType, 0);
//		Map<String, Integer> mb = Maps.newConcurrentMap();
//		for(CarTravelItem item : travelItems) {
//			String carplate = item.getCarplate();
//			String cartype = ma.get(carplate);
//			item.setCartype(cartype);
//			Integer count = mb.get(carplate);
//			if(count == null) {
//				count = 1;
//			} else {
//				count++;
//			}
//			mb.put(carplate, count);
//		}
//		
//		for(CarTravelItem item : travelItems) {
//			String carplate = item.getCarplate();
//			Integer times = mb.get(carplate);
//			if(times >= ktimes) {
//				item.setKtimes(times);
//				overKTimes.add(item);
//			}
//		}
//		
//		Collections.sort(overKTimes);
//		
//		return overKTimes;
//	}
//	
//	public List<CarTravelItem> readCarTravelItems(String filepath, int sheetIndex)  {
//		if (FileUtil.isCSV(filepath)) {
//			return readCarTravelItemsByText(filepath);
//		} else {
//			return readCarTravelItemsByExcel(filepath, sheetIndex);
//		}
//	}
//	
//	public List<CarTravelItem> readCarTravelItemsByText(String filepath)  {
//		List<CarTravelItem> data = Lists.newArrayList();
//		List<String> lines = IOUtil.readLines(filepath, Konstants.CODE_GBK);
//		CarTravelItem item = null;
//		for(String line : lines) {
//			List<String> rowItems = StrUtil.split(line);
//			item = createCarTravelItem(rowItems);
//			if(item != null) {
//				data.add(item);
//			}
//		}
//		
//		return data;
//	}
//	
//	public List<CarTravelItem> readCarTravelItemsByExcel(String filepath, int sheetIndex)  {
//		List<CarTravelItem> data = Lists.newArrayList();
//		List<List<String>> sheet = MsExcelHelper.readSheetByIndex(filepath, sheetIndex);
//		CarTravelItem item = null;
//		for (List<String> rowItems : sheet) {
//			item = createCarTravelItem(rowItems);
//			if(item != null) {	
//				data.add(item);
//			}
//		}
//
//		return data;
//	}
//	
//	public Map<String, String> mapOfPlateAndType(String filepath, int sheetIndex)  {
//		if (FileUtil.isCSV(filepath)) {
//			return mapOfPlateAndTypeByText(filepath);
//		} else {
//			return mapOfPlateAndTypeByExcel(filepath, sheetIndex);
//		}
//	}
//	
//	public Map<String, String> mapOfPlateAndTypeByText(String filepath)  {
//		Map<String, String> map = Maps.newConcurrentMap();
//		List<String> lines = IOUtil.readLines(filepath, Konstants.CODE_GBK);
//		CarTypeItem item = null;
//		for(String line : lines) {
//			List<String> rowItems = StrUtil.split(line);
//			item = createCarTypeItem(rowItems);
//			if(item != null) {
//				map.put(item.getCarplate(), item.getCartype());
//			}
//		}
//		
//		return map;
//	}
//	
//	public Map<String, String> mapOfPlateAndTypeByExcel(String filepath, int sheetIndex)  {
//		Map<String, String> map = Maps.newConcurrentMap();
//		List<List<String>> sheet = MsExcelHelper.readSheetByIndex(filepath, sheetIndex);
//		CarTypeItem item = null;
//		for (List<String> rowItems : sheet) {
//			item = createCarTypeItem(rowItems);
//			if(item != null) {
//				map.put(item.getCarplate(), item.getCartype());
//			}
//		}
//
//		return map;
//	}
//	
//	public boolean saveAsExcel(List<CarTravelItem> items, String filepath) {
//		Workbook wb = MsExcelHelper.newWorkbook(filepath);
//		Sheet she = wb.createSheet("sheet1");
//		int startRow = 0;
//		Row row = she.createRow(startRow++);
//
//		int column = 0;
//		createCell(row, column++, "单位名称");
//		createCell(row, column++, "单位性质");
//		createCell(row, column++, "车牌号码");
//		createCell(row, column++, "次数");
//		createCell(row, column++, "设备编号");
//		createCell(row, column++, "过车时间");
//		createCell(row, column++, "车型");
//		
//		for (int i = 0; i < items.size(); i++) {
//			row = she.createRow(startRow + i);
//
//			CarTravelItem car = items.get(i);
//			column = 0;
//			createCell(row, column++, car.goodOwnerName());
//			createCell(row, column++, car.goodOwnerType());
//			createCell(row, column++, car.getCarplate());
//			createCell(row, column++, car.getKtimes());
//			createCell(row, column++, car.getDeviceno());
//			createCell(row, column++, car.getDateinfo());
//			createCell(row, column++, car.goodCarType());
//		}
//
//		try {
//			OutputStream stream = new FileOutputStream(filepath);
//			wb.write(stream);
//			stream.close();
//		} catch (Exception ex) {
//			ex.printStackTrace();
//		}
//
//		return true;
//	}
//	
//	private void createCell(Row row, int column, Object stuff) {
//		Cell cell = row.createCell(column);
//		cell.setCellValue(stuff + "");
//	}
//	
//	//巴马县地方税务局	行政单位	桂M61820	45060010004104
//	public CarTravelItem createCarTravelItem(List<String> items) {
//		if(items.size() < 4) {
//			return null;
//		}
//		
//		String plate = nicePlate(items.get(2));
//		if(!MiscUtil.isLegalCarplate(plate)) {
//			return null;
//		}
//		
//		CarTravelItem item = new CarTravelItem();
//		item.setOwnerName(items.get(0));
//		item.setOwnerType(items.get(1));
//		item.setCarplate(plate);
//		item.setDeviceno(items.get(3));
//		item.setDateinfo(items.get(5));
//		
//		return item;
//	}
//	
//	//00809059-X	巴马县地方税务局	行政单位	一般执法执勤用车	公务用车	广州本田雅阁2.0 AT轿车	小轿车	桂M60552	32012201	1312166	桂M9-00144
//	public CarTypeItem createCarTypeItem(List<String> items) {
//		if(items.size() < 8) {
//			return null;
//		}
//
//		String plate = nicePlate(items.get(7));
//		if(!MiscUtil.isLegalCarplate(plate)) {
//			return null;
//		}
//		
//		CarTypeItem item = new CarTypeItem();
//		item.setCartype(items.get(5));
//		item.setCarplate(plate);
//		
//		return item;
//	}
//	
//	private String nicePlate(String rawplate) {
//		if(EmptyUtil.isNullOrEmpty(rawplate)) {
//			return rawplate;
//		}
//		
//		String temp = rawplate.replaceAll("[_\\-\\s]", "");
//		
//		return temp;
//	}
}
